#ifndef __DHT11_H__
#define __DHT11_H__
#include "sys.h"

#define     DHT11_DATA_PORT         GPIOA
#define     DHT11_DATA_PIN          GPIO_PIN_5
#define     DHT11_DATA_CLK()        __HAL_RCC_GPIOA_CLK_ENABLE()

#define     DHT11_DATA_RX           HAL_GPIO_ReadPin(DHT11_DATA_PORT, DHT11_DATA_PIN)
#define     DHT11_DATA_TX(x)        do { \
                                        x ? \
                                        HAL_GPIO_WritePin(DHT11_DATA_PORT, DHT11_DATA_PIN, GPIO_PIN_SET) : \
                                        HAL_GPIO_WritePin(DHT11_DATA_PORT, DHT11_DATA_PIN, GPIO_PIN_RESET); \
                                        } while (0U)

typedef enum {
    DHT11_FALSE = 0,
    DHT11_OK,
    DHT11_ERROR
} DHT11_STATE_FLAG;


void dht11_init(void);
uint8_t dht11_rx_data(uint8_t *data);
void dht11_show_data(void);


#endif

